//# sourceURL=http://uMapApp/UI/IconMenu/IconMenuSlideTabMenu
define([
    "mhjs/mhjs"
], function (
    mhjs
) {

    // var option = {
    //     "title": "上行",
    //     "list" : [
    //         {
    //             "title": "第一车道",
    //             "list" : [
    //                 {
    //                     "title": "60 KM/H"
    //                 },
    //                 {
    //                     "title": "80 KM/H"
    //                 },
    //                 {
    //                     "title": "100 KM/H"
    //                 },
    //                 {
    //                     "title": "120 KM/H"
    //                 }
    //             ]
    //         },
    //         {
    //             "title": "第二车道",
    //             "list" : [
    //                 {
    //                     "title": "60 KM/H"
    //                 },
    //                 {
    //                     "title": "80 KM/H"
    //                 },
    //                 {
    //                     "title": "100 KM/H"
    //                 },
    //                 {
    //                     "title": "120 KM/H"
    //                 }
    //             ]
    //         }
    //     ]
    // };

    function IconMenuSlideTabMenu(option) {
        var _this = this;

        _this.dom = $("<div class='iconMenuSlideTabMenu'></div>");
        _this.button = $("<div class='iconMenuSlideTabMenuButton'></div>");
        _this.buttons = $("<div class='iconMenuSlideTabMenuButtons'></div>");

        _this.dom.append(_this.button);
        _this.dom.append(_this.buttons);

        _this.isActive = false;
        _this.isEnable = false;

        _this.button.click(function () {
            if (_this._list) {
                _this.toggle();
            } else {
                if (_this.isEnable) {
                    _this.toggleActive();
                    _this.parent.parent.parent.parent.checkActive();
                }
            }
        });

        if (option) {

            if (option.title) {
                _this.title = option.title;
            }

            if (option.list) {
                _this.list = option.list;
            } else {
                _this.onActive = option.onActive;
                _this.onInactive = option.onInactive;
            }

        }

    }

    var _class = IconMenuSlideTabMenu;

    mhjs.Inherit(_class, mhjs.Div);

    Object.defineProperties(_class.prototype, {
        "title"       : {
            set: function (title) {
                var _this = this;
                _this._title = title;
                _this.button.text(title);
            },
            get: function () {
                return this._title;
            }
        },
        "list"        : {
            set: function (list) {
                var _this = this;
                _this._list = [];
                _this.buttons.empty();
                $.each(list, function (i, item) {
                    var iconMenuSlideTabMenu = new _class(item);
                    iconMenuSlideTabMenu.parent = _this;
                    _this.buttons.append(iconMenuSlideTabMenu.dom);
                    _this._list.push(iconMenuSlideTabMenu);
                });

            },
            get: function () {
                return this._list;
            }
        },
        "open"        : {
            value: function () {
                this.buttons.slideDown("fast");
            }
        },
        "close"       : {
            value: function () {
                this.buttons.slideUp("fast");
            }
        },
        "toggle"      : {
            value: function () {
                this.buttons.slideToggle("fast");
            }
        },
        "active"      : {
            value: function () {
                if (!this.isActive) {
                    this._onActive && this._onActive(this);
                }

                this.button.addClass("active");
                this.isActive = true;
            }
        },
        "onActive"    : {
            set: function (fun) {
                var _this = this;

                if (fun) {
                    _this._onActive = fun;
                    _this.enable();
                } else {
                    _this.disable();
                }

            },
            get: function () {
                return this._onActive;
            }
        },
        "inactive"    : {
            value: function () {
                if (this.isActive) {
                    this._onInactive && this._onInactive(this);
                }

                this.button.removeClass("active");
                this.isActive = false;
            }
        },
        "onInactive"  : {
            set: function (fun) {
                var _this = this;
                _this._onInactive = fun;
            },
            get: function () {
                return this._onInactive;
            }
        },
        "toggleActive": {
            value: function () {
                if (this.isActive) {
                    this.inactive();
                } else {
                    this.active();
                }
            }
        },
        "enable"      : {
            value: function () {

                this.button.removeClass("disable");
                this.isEnable = true;

            }
        },
        "disable"     : {
            value: function () {
                this.button.addClass("disable");
                this.isEnable = false;
            }
        },
        "toggleEnable": {
            value: function () {
                if (this.isEnable) {
                    this.disable();
                } else {
                    this.enable();
                }

            }
        }

    });

    return _class;


});